﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

CKEDITOR.dialog.add('cellProperties',function(a){
    var b=a.lang.table,c=b.cell,d=a.lang.common,e=CKEDITOR.dialog.validate,f=/^(\d+(?:\.\d+)?)(px|%)$/,g=/^(\d+(?:\.\d+)?)px$/,h=CKEDITOR.tools.bind,i={
        type:'html',
        html:'&nbsp;'
    },j=a.lang.dir=='rtl';
    function k(l,m){
        var n=function(){
            var r=this;
            p(r);
            m(r,r._.parentDialog);
            r._.parentDialog.changeFocus();
        },o=function(){
            p(this);
            this._.parentDialog.changeFocus();
        },p=function(r){
            r.removeListener('ok',n);
            r.removeListener('cancel',o);
        },q=function(r){
            r.on('ok',n);
            r.on('cancel',o);
        };
        
        a.execCommand(l);
        if(a._.storedDialogs.colordialog)q(a._.storedDialogs.colordialog);else CKEDITOR.on('dialogDefinition',function(r){
            if(r.data.name!=l)return;
            var s=r.data.definition;
            r.removeListener();
            s.onLoad=CKEDITOR.tools.override(s.onLoad,function(t){
                return function(){
                    q(this);
                    s.onLoad=t;
                    if(typeof t=='function')t.call(this);
                };
            
            });
        });
};

return{
    title:c.title,
    minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?450:410,
    minHeight:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?230:220,
    contents:[{
        id:'info',
        label:c.title,
        accessKey:'I',
        elements:[{
            type:'hbox',
            widths:['40%','5%','40%'],
            children:[{
                type:'vbox',
                padding:0,
                children:[{
                    type:'hbox',
                    widths:['70%','30%'],
                    children:[{
                        type:'text',
                        id:'width',
                        width:'100px',
                        label:d.width,
                        validate:e.number(c.invalidWidth),
                        onLoad:function(){
                            var l=this.getDialog().getContentElement('info','widthType'),m=l.getElement(),n=this.getInputElement(),o=n.getAttribute('aria-labelledby');
                            n.setAttribute('aria-labelledby',[o,m.$.id].join(' '));
                        },
                        setup:function(l){
                            var m=parseInt(l.getAttribute('width'),10),n=parseInt(l.getStyle('width'),10);
                            !isNaN(m)&&this.setValue(m);
                            !isNaN(n)&&this.setValue(n);
                        },
                        commit:function(l){
                            var m=parseInt(this.getValue(),10),n=this.getDialog().getValueOf('info','widthType');
                            if(!isNaN(m))l.setStyle('width',m+n);else l.removeStyle('width');
                            l.removeAttribute('width');
                        },
                        'default':''
                    },{
                        type:'select',
                        id:'widthType',
                        label:a.lang.table.widthUnit,
                        labelStyle:'visibility:hidden',
                        'default':'px',
                        items:[[b.widthPx,'px'],[b.widthPc,'%']],
                        setup:function(l){
                            var m=f.exec(l.getStyle('width')||l.getAttribute('width'));
                            if(m)this.setValue(m[2]);
                        }
                    }]
                },{
                type:'hbox',
                widths:['70%','30%'],
                children:[{
                    type:'text',
                    id:'height',
                    label:d.height,
                    width:'100px',
                    'default':'',
                    validate:e.number(c.invalidHeight),
                    onLoad:function(){
                        var l=this.getDialog().getContentElement('info','htmlHeightType'),m=l.getElement(),n=this.getInputElement(),o=n.getAttribute('aria-labelledby');
                        n.setAttribute('aria-labelledby',[o,m.$.id].join(' '));
                    },
                    setup:function(l){
                        var m=parseInt(l.getAttribute('height'),10),n=parseInt(l.getStyle('height'),10);
                        !isNaN(m)&&this.setValue(m);
                        !isNaN(n)&&this.setValue(n);
                    },
                    commit:function(l){
                        var m=parseInt(this.getValue(),10);
                        if(!isNaN(m))l.setStyle('height',CKEDITOR.tools.cssLength(m));else l.removeStyle('height');
                        l.removeAttribute('height');
                    }
                },{
                id:'htmlHeightType',
                type:'html',
                html:'<br />'+b.widthPx
                }]
            },i,{
            type:'select',
            id:'wordWrap',
            label:c.wordWrap,
            'default':'yes',
            items:[[c.yes,'yes'],[c.no,'no']],
            setup:function(l){
                var m=l.getAttribute('noWrap'),n=l.getStyle('white-space');
                if(n=='nowrap'||m)this.setValue('no');
            },
            commit:function(l){
                if(this.getValue()=='no')l.setStyle('white-space','nowrap');else l.removeStyle('white-space');
                l.removeAttribute('noWrap');
            }
        },i,{
        type:'select',
        id:'hAlign',
        label:c.hAlign,
        'default':'',
        items:[[d.notSet,''],[d.alignLeft,'left'],[d.alignCenter,'center'],[d.alignRight,'right']],
        setup:function(l){
            var m=l.getAttribute('align'),n=l.getStyle('text-align');
            this.setValue(n||m||'');
        },
        commit:function(l){
            var m=this.getValue();
            if(m)l.setStyle('text-align',m);else l.removeStyle('text-align');
            l.removeAttribute('align');
        }
    },{
    type:'select',
    id:'vAlign',
    label:c.vAlign,
    'default':'',
    items:[[d.notSet,''],[d.alignTop,'top'],[d.alignMiddle,'middle'],[d.alignBottom,'bottom'],[c.alignBaseline,'baseline']],
    setup:function(l){
        var m=l.getAttribute('vAlign'),n=l.getStyle('vertical-align');
        switch(n){
            case 'top':case 'middle':case 'bottom':case 'baseline':
                break;
            default:
                n='';
        }
        this.setValue(n||m||'');
    },
    commit:function(l){
        var m=this.getValue();
        if(m)l.setStyle('vertical-align',m);else l.removeStyle('vertical-align');
        l.removeAttribute('vAlign');
    }
}]
},i,{
    type:'vbox',
    padding:0,
    children:[{
        type:'select',
        id:'cellType',
        label:c.cellType,
        'default':'td',
        items:[[c.data,'td'],[c.header,'th']],
        setup:function(l){
            this.setValue(l.getName());
        },
        commit:function(l){
            l.renameNode(this.getValue());
        }
    },i,{
    type:'text',
    id:'rowSpan',
    label:c.rowSpan,
    'default':'',
    validate:e.integer(c.invalidRowSpan),
    setup:function(l){
        var m=parseInt(l.getAttribute('rowSpan'),10);
        if(m&&m!=1)this.setValue(m);
    },
    commit:function(l){
        var m=parseInt(this.getValue(),10);
        if(m&&m!=1)l.setAttribute('rowSpan',this.getValue());else l.removeAttribute('rowSpan');
    }
},{
    type:'text',
    id:'colSpan',
    label:c.colSpan,
    'default':'',
    validate:e.integer(c.invalidColSpan),
    setup:function(l){
        var m=parseInt(l.getAttribute('colSpan'),10);
        if(m&&m!=1)this.setValue(m);
    },
    commit:function(l){
        var m=parseInt(this.getValue(),10);
        if(m&&m!=1)l.setAttribute('colSpan',this.getValue());else l.removeAttribute('colSpan');
    }
},i,{
    type:'hbox',
    padding:0,
    widths:['60%','40%'],
    children:[{
        type:'text',
        id:'bgColor',
        label:c.bgColor,
        'default':'',
        setup:function(l){
            var m=l.getAttribute('bgColor'),n=l.getStyle('background-color');
            this.setValue(n||m);
        },
        commit:function(l){
            var m=this.getValue();
            if(m)l.setStyle('background-color',this.getValue());else l.removeStyle('background-color');
            l.removeAttribute('bgColor');
        }
    },{
    type:'button',
    id:'bgColorChoose',
    'class':'colorChooser',
    label:c.chooseColor,
    onLoad:function(){
        this.getElement().getParent().setStyle('vertical-align','bottom');
    },
    onClick:function(){
        var l=this;
        k('colordialog',function(m){
            l.getDialog().getContentElement('info','bgColor').setValue(m.getContentElement('picker','selectedColor').getValue());
        });
    }
}]
},i,{
    type:'hbox',
    padding:0,
    widths:['60%','40%'],
    children:[{
        type:'text',
        id:'borderColor',
        label:c.borderColor,
        'default':'',
        setup:function(l){
            var m=l.getAttribute('borderColor'),n=l.getStyle('border-color');
            this.setValue(n||m);
        },
        commit:function(l){
            var m=this.getValue();
            if(m)l.setStyle('border-color',this.getValue());else l.removeStyle('border-color');
            l.removeAttribute('borderColor');
        }
    },{
    type:'button',
    id:'borderColorChoose',
    'class':'colorChooser',
    label:c.chooseColor,
    style:(j?'margin-right':'margin-left')+': 10px',
    onLoad:function(){
        this.getElement().getParent().setStyle('vertical-align','bottom');
    },
    onClick:function(){
        var l=this;
        k('colordialog',function(m){
            l.getDialog().getContentElement('info','borderColor').setValue(m.getContentElement('picker','selectedColor').getValue());
        });
    }
}]
}]
}]
}]
}],
onShow:function(){
    var l=this;
    l.cells=CKEDITOR.plugins.tabletools.getSelectedCells(l._.editor.getSelection());
    l.setupContent(l.cells[0]);
},
onOk:function(){
    var p=this;
    var l=p._.editor.getSelection(),m=l.createBookmarks(),n=p.cells;
    for(var o=0;o<n.length;o++)p.commitContent(n[o]);
    p._.editor.forceNextSelectionCheck();
    l.selectBookmarks(m);
    p._.editor.selectionChange();
}
};

});
